# clr是公共运行时环境，这个模块是与C#交互的核心
import clr
import sys
from clr import System

sys.path.append(r'pythonProject')  # 加载c#dll文件路径，与py文件放在一个文件夹中
clr.FindAssembly('PythonCallDll.dll')  # 加载c#dll文件
a = clr.AddReference('PythonCallDll')  # 实例化C#类库?，这样可以调用?,比如这个类库的来源Location, 测试如果屏蔽这行，会报错，但对类的实例化和调用没有影响。
print(a)

from PythonCallDll import *  # 导入命名空间

# print(dir(Class1))
instance = Class1()     # 创建类的对象实例1,使用无参构造器
instance2 = Class1('object2')  # 创建类的对象实例2，使用有参构造器
print('Class1类的静态字段(对类的实例化次数计数)_classObjectCounts = ', Class1._classObjectCounts)
print('Class1类的实例1，调用方法AddCalc: 1+2= ', instance.AddCalc(1, 2))
print('Class1类的实例1，实例属性ClassName:',instance.ClassName)
print('Class1类的实例2，实例属性ClassName:',instance2.ClassName)
instance.SayHello()  # Class1类的实例1，调用无参方法SayHello
instance.SayHello('pythonnet')  # Class1类的实例1，调用有参方法SayHello
